home *** CD-ROM | disk | FTP | other *** search
Text File | 1990-07-23 | 1.3 KB | 85 lines | [TEXT/MPS ] |
- //
- // © Copyright 1990 Apple Computer, Inc. By Ricardo Batista
- //
-
- #include "Types.h"
- #include "Memory.h"
- #include "Menus.h"
- #include "Packages.h"
- #include "HyperXCMD.h"
-
-
- void GetHLong(Handle H, long *s);
- Handle SetHLong(long num);
-
- pascal void MAIN(XCmdPtr xcmd)
- {
- long num, top, left, popItem;
- long newItem;
- WindowPtr w;
- GrafPtr savePort;
- Point where;
-
- if (xcmd->paramCount != 4)
- return;
- GetHLong(xcmd->params[0], &num);
- if (!num)
- return;
- GetHLong(xcmd->params[1], &top);
- GetHLong(xcmd->params[2], &left);
- GetHLong(xcmd->params[3], &popItem);
- w = FrontWindow();
- GetPort(&savePort);
- if (w)
- SetPort(w);
- where.h = left;
- where.v = top;
- LocalToGlobal(&where);
- newItem = PopUpMenuSelect((MenuHandle) num, where.v, where.h,
- (short) popItem);
- SetPort(savePort);
- newItem &= 0x0000FFFF;
- xcmd->returnValue = SetHLong(newItem);
- }
-
-
- void GetHLong(Handle H, long *s)
- {
- short len;
- char st[256];
-
- *s = 0L;
- HLock(H);
- len = (short) GetHandleSize(H);
- if (len > 255)
- len = 255;
- BlockMove(*H, &st[1], (long) len);
- HUnlock(H);
- len = 1;
- while (st[len])
- len++;
- st[0] = len - 1;
- StringToNum(st, s);
- }
-
-
- Handle SetHLong(long num)
- {
- Handle H;
- char st[60];
- short len;
-
- NumToString(num, st);
- len = st[0];
- H = NewHandle((long) len);
- if (H) {
- HLock(H);
- BlockMove(&st[1], *H, (long) len);
- (*H)[len] = 0;
- }
- return(H);
- }
-
-
-
-